元数据库数据字典
云原生数据仓库AnalyticDB MySQL版的元数据库为INFORMATION_SCHEMA库,兼容MySQL的元数据库。查询元数据库可以直接在JDBC连接中使用SQL语句进行查询。查询test库下的所有表,示例如下:
select * from TABLES where table_schema='test'
SCHEMATA
SCHEMATA表提供了关于数据库的信息。
FIELD | TYPE | ALLOW_NULL | DEFAULT | COMMENT |
CATALOG_NAME | varchar(16) | YES | NULL | CATALOG名称 |
SCHEMA_NAME | varchar(64) | NO | NULL | SCHEMA名称 |
DEFAULT_CHARACTER_SET_NAME | varchar(64) | YES | UTF-8 | 默认字符集 |
DEFAULT_COLLATION_NAME | varchar(64) | YES | OFF | 默认排序规则 |
SQL_PATH | varchar(255) | YES | NULL | SQL路径 |
TABLES
TABLES表提供数据库表信息。该部分数据包括表的元数据与部分表对应数据的元数据,如分区信息等。
FIELD | TYPE | ALLOW_NULL | DEFAULT | COMMENT |
TABLE_CATALOG | varchar(512) | NO | NULL | 固定值'def' |
TABLE_SCHEMA | varchar(64) | NO | NULL | 所属SCHEMA的名称 |
TABLE_NAME | varchar(64) | NO | NULL | 表名称 |
TABLE_TYPE | varchar(64) | YES | NULL | 标记:分区表PARTITION_TABLE、复制表DIMENSION_TABLE |
ENGINE | varchar(64) | YES | NULL | 引擎类型 |
VERSION | bigint(21) | YES | NULL | tableId |
ROW_FORMAT | varchar(20) | YES | NULL | 固定值'Compact' |
TABLE_ROWS | bigint(21) | YES | NULL | 记录条数 |
AVG_ROW_LENGTH | bigint(21) | YES | NULL | 未使用,为null |
DATA_LENGTH | bigint(21) | YES | NULL | 数据大小 |
MAX_DATA_LENGTH | bigint(21) | YES | NULL | 未使用,为null |
INDEX_LENGTH | bigint(21) | YES | NULL | 索引大小 |
DATA_FREE | bigint(21) | YES | NULL | 未使用,为null |
AUTO_INCREMENT | bigint(21) | YES | NULL | 表的自增值(未使用,为null) |
CREATE_TIME | datetime | YES | NULL | 创建时间 |
UPDATE_TIME | datetime | YES | NULL | 更新时间 |
CHECK_TIME | datetime | YES | NULL | 未使用,为null |
TABLE_COLLATION | varchar(32) | YES | NULL | 固定值“utf8_bin” |
CHECKSUM | bigint(21) | YES | NULL | 未使用,为null |
CREATE_OPTIONS | varchar(255) | YES | NULL | 未使用,为null |
TABLE_COMMENT | varchar(255) | YES | NULL | 表注释 |
如果不知道具体的表名,只是希望了解某一个SCHEMA下有多少张不同类型的表,可以查询这张表。例如:
SELECT DISTINCT TABLE_CATALOG, TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA = 'xxx';
如果希望了解某一个SCHEMA下面哪些是视图,可以查询这张表。例如:
SELECT TABLE_CATALOG, TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA = 'xxx' AND TABLE_TYPE = 'VIEW';
COLUMNS
该表存储了所有的表中字段的详细信息。
FIELD | TYPE | ALLOW_NULL | DEFAULT | COMMENT |
TABLE_CATALOG | varchar(8) | YES | NULL | CATALOG名称 |
TABLE_SCHEMA | varchar(64) | NO | NULL | 所属SCHEMA |
TABLE_NAME | varchar(64) | NO | NULL | 所属表名 |
COLUMN_NAME | varchar(64) | NO | NULL | 列名 |
ORDINAL_POSITION | bigint(21) | YES | NULL | 在表中的位置 |
COLUMN_DEFAULT | varchar(255) | YES | NULL | 默认列 |
IS_NULLABLE | tinyint(1) | YES | 1 | 是否允许空 |
DATA_TYPE | bigint(21) | YES | NULL | 数据类型名称 |
CHARACTER_MAXIMUM_LENGTH | bigint(21) | YES | NULL | 字符最大长度 |
CHARACTER_OCTET_LENGTH | bigint(21) | YES | NULL | 字符八进制长度 |
NUMERIC_PRECISION | int(11) | YES | NULL | 数值精度 |
NUMERIC_SCALE | bigint(21) | YES | NULL | 数值范围 |
DATETIME_PRECISION | bigint(21) | YES | NULL | 时间精度 |
CHARACTER_SET_NAME | varchar(32) | YES | NULL | 字符集名称 |
COLLATION_NAME | varchar(32) | YES | NULL | 排序规则名称 |
COLUMN_TYPE | varchar(64) | YES | NULL | 列类型 |
COLUMN_KEY | varchar(3) | NO | NULL | 索引类型 |
EXTRA | varchar(30) | NO | NULL | 是否on update |
PRIVILEGES | varchar(80) | NO | NULL | 固定值:select,insert,update,references |
COLUMN_COMMENT | varchar(1024) | 1024 | NULL | 列注释 |
如果希望了解某一个表包含的所有列信息,可以根据TABLE_SCHEMA和TABLE_NAME查询需要的列信息。